package demo2;
/*
1. 类名后的 <T> 代表占位符，表示当前类是一个泛型类
        了解： 【规范】类型形参一般使用一个大写字母表示，常用的名称有：
        E 表示 Element
        K 表示 Key
        V 表示 Value
        N 表示 Number
        T 表示 Type
        S, U, V 等等 - 第二、第三、第四个类型
 2. 注释1处，不能new泛型类型的数组
        意味着：
        课件当中的代码：T[] array = (T[])new Object[10];是否就足够好，答案是未必的。这块问题一会儿介
        绍。
 3. 注释2处，类型后加入 <Integer> 指定当前类型
 4. 注释3处，不需要进行强制类型转换
  5. 注释4处，代码编译报错，此时因为在注释2处指定类当前的类型，此时在注释4处，编译器会在存放元素的时
        候帮助我们进行类型检查.

 */
class MyArray<T> {
    public T[] array = (T[])new Object[10];//1
    public T getPos(int pos) {
        return this.array[pos];
    }
    public void setVal(int pos,T val) {
        this.array[pos] = val;
    }
}
public class TestDemo {
    public static void main(String[] args) {
        MyArray<Integer> myArray = new MyArray<>();//2
        myArray.setVal(0,10);
        myArray.setVal(1,12);
        int ret = myArray.getPos(1);//3
        System.out.println(ret);
       // myArray.setVal(2,"bit");//4
    }
}

